package com.xbongbong.paas.pojo;

import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.field.ItemPoJo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * @author 梁鲁江
 * @version v1.0
 * @date 2020/3/25 21:30
 * @since v1.0
 */
@Getter
@Setter
@ToString
public class BiExplainPojo implements Serializable {
    private static final long serialVersionUID = -4664982759962530043L;
    /**
     * 现有字段存储位置
     */
    @NotBlank(message = "字段标识不能为空")
    private String attr;
    /**
     *原字段存储位置
     */
    @NotBlank(message = "字段标识不能为空")
    private String originalAttr;
    /**
     * 字段标识索引
     */
    @NotBlank(message = "字段标识索引不能为空")
    private String attrType;
    /**
     * 字段类型
     */
    @NotNull(message = "字段类型不能为空")
    private Integer fieldType;
    /**
     * 表单id
     */
    private Long formId;
    /**
     * 标题
     */
    private String attrName;
    /**
     * 用于下拉框，下拉复选，单选，复选的选项值
     */
    private List<ItemPoJo> items;

    /**
     * 用于子表单，存储父子表单attr
     */
    private String parentAttr;

    /**
     * 筛选类型
     * 1：可筛选
     * 2：不可筛选
     * @see com.xbongbong.paas.enums.ScreenTypeEnum
     */
    private Integer screenType;
    /**
     * 时间字段的分组方式 - 使用BI内的存值格式
     * @see com.xbongbong.pro.enums.IntervalTypeEnum
     */
    private String dateType;
    /**
     * 汇总方式(AggTypeEnum)：求和、平均值、最小值、最大值、计数
     * @see com.xbongbong.paas.enums.AggTypeEnum
     */
    private String aggType;
    /**
     * 关联类型字段属性
     */
    private JSONObject linkedAttr;
    /**
     * 关联业务选择，关联字段
     */
    private String linkedText;
    
    private Integer saasMark;
    /**
     * 数字是否使用千分符
     */
    private Integer groupingUsed;
    /**
     * 数字是否使用百分比
     */
    private Integer percentUsed;
    /**
     * 精度
     */
    private Integer accuracy;
    /**
     * 默认开启 1:开启，0：关闭，2：回收站
     */
    private Integer isOpen;

    public BiExplainPojo() {
    }

    public BiExplainPojo(String attr, String originalAttr, String attrType, Integer fieldType, Long formId, String attrName) {
        this.attr = attr;
        this.originalAttr = originalAttr;
        this.attrType = attrType;
        this.fieldType = fieldType;
        this.formId = formId;
        this.attrName = attrName;
    }
}
